﻿using System;
using System.Collections.Generic;
using System.IO;
using LimitatorInterfaces;
using System.Linq;
using LimitatorInterfaces.LoadServices;
using MicexFileLoader;

namespace LoadServices
{
    public class MicexFileLoadProvider : ILoadProvider
    {
        public object[] LoadFromSource(object param)
        {
            var inputParams = param as KeyValuePair<string, string>[];

            if (inputParams == null || inputParams.Length == 0)
                throw new ArgumentException("Параметр загрузчика неопределен", "param");

            var filePath = inputParams.SingleOrDefault(p => p.Key == Res.SourceFile).Value;

            if (string.IsNullOrWhiteSpace(filePath))
                throw new ArgumentException("Переданные загрузчику параметры не содержат " + Res.SourceFile + ", либо этот параметр пуст");

            if (!File.Exists(filePath))
                throw new FileNotFoundException("Не удалось найти файл" + filePath);

            string[] content = File.ReadAllLines(filePath);

            if (content == null || content.Length < 1)
                throw new LoadProviderException(string.Format("Файл {0} не содержит строк лимитов", filePath));

            return content;
        }
    }
}